// 页面DOM加载完毕后执行（与你提供的$(function () {load();})格式一致）
$(function () {
    // 1. 登录状态检查（保留基础验证，确保未登录跳转）
    const user = sessionStorage.getItem("userInfo");
    if (!user && !window.location.pathname.includes("login.html")) {
        window.location.href = "../pages/login.html";
    }
    const currentUser = user ? JSON.parse(user) : null;
    if (currentUser) {
        $("#user-name").text(currentUser.username);
    }

    // 2. 初始化：加载全部音乐
    // load();
    getAllMusic()
    initPlayer(); // 初始化播放器（基础播放控制）

    // 3. 侧边栏切换（移动端）
    $("#menu-toggle").click(function () {
        $("#sidebar").toggleClass("active");
    });

    // 4. 退出登录
    $("#user-logout").click(function () {
        sessionStorage.removeItem("userInfo");
        window.location.href = "../pages/login.html";
    });

    // 5. 搜索功能：输入时触发加载（传递musicName参数）
    $("#search-input").on("input", function () {
        const musicName = $(this).val().trim();
        load(musicName); // 调用load函数，传入搜索关键词
    });

    // 6. 当前播放音乐收藏
    $("#now-playing-like").click(function () {
        if (!currentUser) {
            alert("请先登录");
            return;
        }
        const currentTitle = $("#now-playing-title").text();
        if (currentTitle === "未播放音乐") return;

        // 找到当前播放音乐的ID（从音乐列表数据中匹配）
        const currentMusic = window.musicList?.find(m => m.title === currentTitle);
        if (currentMusic) {
            loveInfo(currentMusic.id); // 调用喜欢函数
        }
    });
});

function getAllMusic() {
    $.ajax({
        url: "/music/getAllMusic", // 后端查询音乐接口路径（与后端MusicController一致）
        type: "get", // 请求方式：GET（与后端接口一致）
        success: function (obj) {
            console.log(obj);
            const data = obj.data;
            console.log("音乐数量：", data.length);
            // 拼接音乐列表HTML（适配你的表格格式，调整为原页面的music-item结构）
            let s = '';
            for (let i = 0; i < data.length; i++) {
                const music = data[i];
                // 音乐播放地址：从后端返回的url拼接.mp3（与你提供的musicUrl逻辑一致）
                const musicUrl = music.url + ".mp3";
                // 判断是否为当前用户上传（用于显示删除按钮）
                const currentUser = sessionStorage.getItem("userInfo") ? JSON.parse(sessionStorage.getItem("userInfo")) : null;
                const isOwner = currentUser && music.userId === currentUser.id;

                // 拼接音乐项（保持原页面的UI结构，替换为你的循环逻辑）
                s += '<div class="music-item" data-id="' + music.id + '">';
                // 音乐索引
                s += '<div class="music-info">';
                s += '<div class="music-index">' + (i + 1) + '</div>';
                // 音乐标题+歌手
                s += '<div class="music-detail">';
                s += '<div class="music-title">' + music.title + '</div>';
                s += '<div class="music-singer">' + music.singer + '</div>';
                s += '</div>';
                s += '</div>';
                // 音乐时长+操作按钮
                s += '<div class="music-extra">';
                s += '<div class="music-duration">' + music.time + '</div>';
                s += '<div class="music-actions">';
                // 播放按钮（调用playerSong函数，传递音乐地址）
                // s += '<button class="music-btn play-btn" onclick="playerSong(\'' + musicUrl + '\', ' + JSON.stringify(music) + ')">';
                // 修正后代码（onclick用单引号，参数1用双引号）
                s += '<button class="music-btn play-btn" onclick=\'playerSong("' + musicUrl + '", ' + JSON.stringify(music) + ')\'>';
                s += '<span class="icon icon-play"></span>';
                s += '</button>';
                // 喜欢按钮（调用loveInfo函数，传递音乐ID）
                s += '<button class="music-btn like-btn" onclick="loveInfo(' + music.id + ')">';
                s += '<span class="icon icon-heart"></span>';
                s += '</button>';
                // 删除按钮（仅当前用户上传显示，调用deleteInfo函数）
                if (isOwner) {
                    s += '<button class="music-btn delete-btn" onclick="deleteInfo(' + music.id + ')">';
                    s += '<span class="icon icon-trash"></span>';
                    s += '</button>';
                }
                s += '</div>';
                s += '</div>';
                s += '</div>';
            }

            // 把拼接好的页面添加到music-list的id下（与原页面容器ID一致）
            $("#music-list").html(s);
        }
    })
}

// 全局存储音乐列表数据（供播放/喜欢功能使用）
window.musicList = [];

// 加载音乐列表（完全按你提供的load函数格式编写，适配后端/music/findmusic接口）
// musicName的值可以为空（为空时查全部音乐）
function load(musicName) {
    $.ajax({
        url: "/music/findMusic", // 后端查询音乐接口路径（与后端MusicController一致）
        type: "get", // 请求方式：GET（与后端接口一致）
        data: { title: musicName }, // 后端参数名：musicName（可选，为空查全部）
        dataType: "json", // 服务器返回数据为json
        success: function (obj) {
            console.log(obj);
            if (obj.status < 0) {
                showToast(obj.message);
                checkLogin();
            }

            // 存储音乐列表到全局变量，供其他函数使用
            window.musicList = obj.data || [];
            const data = window.musicList;
            console.log("音乐数量：", data.length);

            // 拼接音乐列表HTML（适配你的表格格式，调整为原页面的music-item结构）
            let s = '';
            for (let i = 0; i < data.length; i++) {
                const music = data[i];
                // 音乐播放地址：从后端返回的url拼接.mp3（与你提供的musicUrl逻辑一致）
                const musicUrl = music.url + ".mp3";
                // 判断是否为当前用户上传（用于显示删除按钮）
                const currentUser = sessionStorage.getItem("userInfo") ? JSON.parse(sessionStorage.getItem("userInfo")) : null;
                const isOwner = currentUser && music.userId === currentUser.id;

                // 拼接音乐项（保持原页面的UI结构，替换为你的循环逻辑）
                s += '<div class="music-item" data-id="' + music.id + '">';
                // 音乐索引
                s += '<div class="music-info">';
                s += '<div class="music-index">' + (i + 1) + '</div>';
                // 音乐标题+歌手
                s += '<div class="music-detail">';
                s += '<div class="music-title">' + music.title + '</div>';
                s += '<div class="music-singer">' + music.singer + '</div>';
                s += '</div>';
                s += '</div>';
                // 音乐时长+操作按钮
                s += '<div class="music-extra">';
                s += '<div class="music-duration">' + music.time + '</div>';
                s += '<div class="music-actions">';
                // 播放按钮（调用playerSong函数，传递音乐地址）
                // s += '<button class="music-btn play-btn" onclick="playerSong(\'' + musicUrl + '\', ' + JSON.stringify(music) + ')">';
                // 修正后代码（同上面的修正逻辑）
                s += '<button class="music-btn play-btn" onclick=\'playerSong("' + musicUrl + '", ' + JSON.stringify(music) + ')\'>';
                s += '<span class="icon icon-play"></span>';
                s += '</button>';
                // 喜欢按钮（调用loveInfo函数，传递音乐ID）
                s += '<button class="music-btn like-btn" onclick="loveInfo(' + music.id + ')">';
                s += '<span class="icon icon-heart"></span>';
                s += '</button>';
                // 删除按钮（仅当前用户上传显示，调用deleteInfo函数）
                if (isOwner) {
                    s += '<button class="music-btn delete-btn" onclick="deleteInfo(' + music.id + ')">';
                    s += '<span class="icon icon-trash"></span>';
                    s += '</button>';
                }
                s += '</div>';
                s += '</div>';
                s += '</div>';
            }

            // 把拼接好的页面添加到music-list的id下（与原页面容器ID一致）
            $("#music-list").html(s);
        }
    });
}

// 播放歌曲（与你提供的playerSong函数格式一致，适配播放器）
function playerSong(musicUrl, music) {
    const $audioPlayer = $("#audio-player");
    // 设置音频地址并播放
    $audioPlayer.attr("src", musicUrl);
    $audioPlayer[0].play();
    // 更新播放器信息
    $("#now-playing-title").text(music.title);
    $("#now-playing-artist").text(music.singer);
    $("#play-pause-btn").html('<span class="icon icon-pause"></span>');
}

// 删除音乐（与你之前提供的deleteInfo函数格式一致，适配后端/music/delete接口）
function deleteInfo(obj) {
    console.log("删除音乐ID：", obj);
    if (!confirm("确定要删除这首音乐吗？")) return;

    $.ajax({
        url: "/music/delete",
        type: "post",
        data: { "musicId": obj }, // 后端参数名：musicId（与后端接口一致）
        dataType: "json",
        success: function (data) {
            console.log(data);
            if (data.data === true || data.status === 0) {
                alert("删除成功");
                window.location.href = "index.html"; // 刷新当前页面
            } else {
                alert("删除失败：" + (data.message || "未知错误"));
            }
        }
    });
}

// 收藏音乐（适配后端/loveMusic/addLoveMusic接口）
function loveInfo(obj) {
    console.log("收藏音乐ID：", obj);
    const currentUser = sessionStorage.getItem("userInfo");
    if (!currentUser) {
        alert("请先登录");
        return;
    }

    $.ajax({
        url: "/loveMusic/addLoveMusic",
        type: "get",
        data: { "musicId": obj }, // 后端参数名：musicId（与后端接口一致）
        dataType: "json",
        success: function (data) {
            console.log(data);
            if (data.status === 0) {
                alert("收藏成功");
            } else {
                alert("收藏失败：" + (data.message || "该音乐已收藏"));
            }
        }
    });
}

// 初始化播放器（基础播放控制，适配原页面播放器结构）
function initPlayer() {
    const $audioPlayer = $("#audio-player");
    const $playPauseBtn = $("#play-pause-btn");
    const $progressBar = $("#progress-bar");
    const $progressIndicator = $("#progress-indicator");
    const $currentTime = $("#current-time");
    const $totalTime = $("#total-time");

    // 播放/暂停切换
    $playPauseBtn.click(function () {
        if (!$audioPlayer.attr("src")) {
            alert("请先选择音乐播放");
            return;
        }
        if ($audioPlayer[0].paused) {
            $audioPlayer[0].play();
            $playPauseBtn.html('<span class="icon icon-pause"></span>');
        } else {
            $audioPlayer[0].pause();
            $playPauseBtn.html('<span class="icon icon-play"></span>');
        }
    });

    // 进度条更新
    $audioPlayer.on("timeupdate", function () {
        const progress = ($audioPlayer[0].currentTime / $audioPlayer[0].duration) * 100;
        $progressIndicator.css("width", `${progress}%`);
        $currentTime.text(formatTime($audioPlayer[0].currentTime));
    });

    // 加载完成显示总时长
    $audioPlayer.on("loadedmetadata", function () {
        $totalTime.text(formatTime($audioPlayer[0].duration));
    });

    // 点击进度条跳转
    $progressBar.click(function (e) {
        const rect = $(this)[0].getBoundingClientRect();
        const pos = (e.clientX - rect.left) / rect.width;
        $audioPlayer[0].currentTime = pos * $audioPlayer[0].duration;
    });
}

// 时间格式化（秒 → mm:ss）
function formatTime(seconds) {
    if (isNaN(seconds)) return "00:00";
    const mins = Math.floor(seconds / 60);
    const secs = Math.floor(seconds % 60);
    return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
}